﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.Utilities;
using VentaElectrodomesticos.Sql;
using System.Data.SqlClient;

namespace VentaElectrodomesticos.AbmProducto
{
    public partial class FormModificacionProducto : Form
    {
        private Producto producto;
        private ClaseSQL sql = new ClaseSQL();

        public FormModificacionProducto(Producto unProducto)
        {
            InitializeComponent();
            producto = unProducto;

            tbNombreNue.Text = producto.nombre;
            tbDescripcionNue.Text = producto.descripcion;
            tbMarcaNue.Text = producto.marca;
            tbCategoriaNue.Text = producto.categoria.ToString();
            tbPrecioNue.Text = producto.precio;

            if (producto.status.Equals('1'))
            {
                btnHabilitar.Visible = false;
            }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (this.validarCampos())
            {
                try
                {
                    sql.Open();

                    String query = "UPDATE LAG.productos " +
                        "SET nomProducto = '" + tbNombreNue.Text +
                        "', descProducto = '" + tbDescripcionNue.Text +
                        "', marca = '" + tbMarcaNue.Text +
                        "', precio = " + tbPrecioNue.Text +
                        " WHERE idProducto = " + producto.codProducto.ToString();

                    int filasAfectadas = sql.ejecutarNoReader(query);
                    this.Close();
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message, "Error al intentar guardar");
                }
                finally
                {
                    sql.Close();
                }
            }
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            Utils.ClearTextBoxes(this.gbNuevos);
            tbCategoriaNue.Text = producto.categoria.ToString();
        }

        private void btnHabilitar_Click(object sender, EventArgs e)
        {
            bool habilitado = sql.habilitarRegistro("LAG.productos", "idProducto", producto.codProducto.ToString());

            if (habilitado)
            {
                btnHabilitar.Visible = false;
            }
        }

        private bool validarCampos()
        {
            bool vPrecio = this.validarPrecio();
            bool vNombre = !Utils.campoVacio(tbNombreNue, errorProvider, "Ingrese un nombre");
            bool vMarca = !Utils.campoVacio(tbMarcaNue, errorProvider, "Ingrese una marca");
            bool vDescripcion = !Utils.campoVacio(tbDescripcionNue, errorProvider, "Ingrese una descripcion");
            bool vCategoria = !Utils.campoVacio(tbCategoriaNue, errorProvider, "Seleccione una categoria");

            return vPrecio && vNombre && vMarca && vDescripcion && vCategoria;
        }

        private bool validarPrecio()
        {
            bool valido = true;
            float i;

            bool parseoExitoso = float.TryParse(tbPrecioNue.Text.Trim(), out i);

            if (tbPrecioNue.Text.Trim().Length == 0)
            {
                valido = false;
                errorProvider.SetError(tbPrecioNue, "Ingrese un precio");
            }
            else if (!parseoExitoso)
            {
                valido = false;
                errorProvider.SetError(tbPrecioNue, "Ingrese un precio valido");
            }
            else if (i <= 0)
            {
                valido = false;
                errorProvider.SetError(tbPrecioNue, "El precio ingresado debe ser mayor a 0");
            }
            else
            {
                errorProvider.SetError(tbPrecioNue, "");
            }

            return valido;
        }


        private void ingresarSoloNumericos(object sender, KeyPressEventArgs e)
        {
            if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"\u0008|,|[0-9]+"))
                e.Handled = true;
        }
    }
}
